#include <stdio.h>
#include <stdbool.h>

#define MAX_KEYS 1000
typedef int ElementType;

int treeHigh(int);
//ElementType *insert
void sort(ElementType*,int);
void inOrder(ElementType*,int,int);
int main(void){
	int n;
	ElementType keys[MAX_KEYS];
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&keys[i]);
	}

	sort(keys,n);
//printf("Sort\n");
	//for(int i=0;i<n;i++){
	//	printf("%d ",keys[i]);
	//}
//printf("\n");
	int indexs[MAX_KEYS];
	inOrder(indexs,1,n);
//printf("inOrder index\n");
	//for(int i=0;i<n;i++){
	//	printf("%d ",indexs[i]-1);
	//	//printf(" %d",keys[ indexs[i]-1 ]);
	//}
	_Bool first=true;
	for( int i=1;i<=n;i++ ){
		for(int j=0;j<n;j++){
			if( i == indexs[j] ){	
				if( first ){
					first=false;
					printf("%d",keys[ j ]);
				}else{
					printf(" %d",keys[ j ]);
				}
			}
		}
	}
	return 0;
}

int treeHigh(int nodes){
	int high=1;
	for(int i=2; i-1< nodes ;i*=2,high++);
	return high;
}


void sort(ElementType *keys,int len){
	int min,tmp;
	for(int i=0;i<len;i++){
		min=keys[i];
		for(int j=i+1;j<len;j++){
			if( keys[j] < min ){
				min=keys[j];
				tmp=keys[i];
				keys[i]=keys[j];
				keys[j]=tmp;
			//	tmp=min;
			//	min=keys[j];
			//	keys[j]=tmp;
			}
		}
	}
}

int inOrderIndex=0;
void inOrder(ElementType *keys,int index,int nodes){
	if( index > nodes )
		return;
	inOrder(keys,2*index,nodes);
	//printf("%d ",index);
	keys[inOrderIndex++]=index;
	inOrder(keys,2*index+1,nodes);
	return;
}
